QuACS.tech

Hands-on quality engineering — from test strategy to AI workflows. Experienced yet still eager to learn.

Case studies, processes, and honest reflections from a senior QA engineer working at the intersection of quality, agile, and AI.

pinned
Shift-left-left: quality starts when you walk through the door
Shift left is about moving quality earlier in the development cycle. Shift-left-left is about moving it earlier than that — into the culture, the conversations, and the mindset people bring to work every morning.
recent
Testing a data migration nobody should notice: part 1 — the problem
When an API project needs to change its data source without the customer noticing, unit tests are not enough. This is the story of how I built a custom comparison pipeline to close that gap — alone, incrementally, and with a little help from ChatGPT.
Working MVP in 90 minutes — Lovable, Anthropic API, and knowing what you want to build
How I went from idea to working MVP in a single evening — and why the 90 minutes was the easy part.
We do Scrum. We have dailies.
A case study in teams that adopted Scrum by scheduling meetings — and quietly dropped the one that actually makes it work.
The Scrum adoption that actually worked — and why
A case study in successful agile adoption — where the turning point was not the team understanding Scrum, but management finally leaving them alone for two weeks.
Postman, Newman, and a little bash to make it useful
How to run Postman collections from the command line with Newman and wrap the output in a bash script that actually tells you what went wrong.
The course industrial complex
Every technology wave brings the same thing slightly faster than the technology itself: a course about it. An observation on momentum, monetisation, and what actually makes someone good at their job.
document.getElementById("search-input").addEventListener("input", function () { const query = this.value.trim(); const box = document.getElementById("search-results"); if (!query || !fuse) { box.innerHTML = ""; return; } const results = fuse.search(query).slice(0, 8); box.innerHTML = results.map(r => `
${r.item.title}
${r.item.section}
`).join(""); });